<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>抽象工厂</title>
</head>
<body>
<script>
    //抽象产品 游戏
    class Game{
        //功能
        keJin(){console.log("游戏可以氪金")}
    }

    //具体产品 游戏
    class tencentGame extends Game{
        keJin(){
            console.log("腾讯游戏:氪金前你是我儿子，氪金后你就是我爸爸！")
        }
    }

    class neteaseGame extends Game{
        keJin(){
            console.log("网易游戏:氪金前你是我孙子，氪金后你勉强算我儿子。")
        }
    }

    //抽象产品 音乐
    class Music{
        listen(){
            console.log("音乐可以听")
        }
    }

    //具体产品 音乐
    class qqMusic extends Music{
        listen() {
            console.log("QQ音乐:听歌吗？绿钻了解一下")
        }
    }

    class wangyiyunMusic extends Music{
        listen() {
            console.log("网易云:到点了到点了。生不出人，我很抱歉。")
        }
    }

    //抽象工厂
    class Factory{
        createGame(){
            console.log("某某工厂生产某某游戏")
        }

        createMusic(){
            console.log("某某工厂生产某某音乐")
        }
    }

    //具体工厂
    class tencentFactory extends Factory{ //鹅厂
        createGame() {
            console.log("腾讯:该充钱了，爸爸")
            return new tencentGame()
        }

        createMusic() {
            console.log("QQ音乐:QQ豪华绿钻了解一下")
            return new qqMusic()
        }
    }

    class neteaseFactory extends Factory{ //猪厂
        createGame() {
            console.log("网易:还不氪金，孙子")
            return new neteaseGame()
        }

        createMusic() {
            console.log("网易云:生吃个人，我很抱歉")
            return new wangyiyunMusic()
        }
    }

    //鹅厂
    let tencent = new tencentFactory()
    tencent.createGame().keJin()
    tencent.createMusic().listen()

    //猪厂
    let wangyi = new neteaseFactory()
    wangyi.createGame().keJin()
    wangyi.createMusic().listen()
</script>
</body>
</html>